#include<iostream>
#include<mysql/mysql.h>
#include<unistd.h>

#include<string>

const std::string host = "localhost";
const std::string user = "connector";
const std::string passwd = "123456";
const std::string db = "conn";
const unsigned int port = 9527;

int main()
{
    MYSQL* my = mysql_init(nullptr);

    if(mysql_real_connect(my, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0) == nullptr)
    {
        std::cerr << "mysql_real_connect err" << std::endl;
        exit(1);
    }

    // std::string tmp = "select * from user";
    
    std::string tmp = "insert into user (name,age,telphone) values ('fangzhang', 20, 5235134113)";
    int ret = mysql_query(my, tmp.c_str());

    if(ret == 0)
    {
        std::cout << "success" << std::endl;
    }
    else
    {
        std::cout << "err" << std::endl; 
    }
    
    mysql_close(my);
        
    // if(MYSQL_RES* res = mysql_store_result(my))
    // {
    //     int rows = mysql_num_rows(res);
    //     int fields = mysql_num_fields(res);

    //     MYSQL_FIELD* fieldArr = mysql_fetch_fields(res);
    //     for(int j = 0; j < fields; ++j)
    //     {
    //         std::cout << fieldArr[j].name << '\t';
    //     }

    //     std::cout << std::endl;

    //     for(int i = 0; i < rows; ++i)
    //     {
    //         MYSQL_ROW rowArr = mysql_fetch_row(res);
    //         for(int j = 0; j < fields; ++j)
    //         {
    //             std::cout << rowArr[j] << '\t';
    //         }
    //         std::cout << std::endl;
    //     }

    //     mysql_free_result(res);
    // }

   

        // 建个表
    // const std::string tmp = "\
    // create table user(\
    //     id bigint primary key auto_increment,\
    //     name varchar(32) not null,\
    //     age int not null,\
    //     telphone varchar(32) unique\
    // );";


        // 编码
    // MY_CHARSET_INFO charset_info;
    // mysql_get_character_set_info(my, &charset_info);
    // printf("Character set name: %s\n", charset_info.name);
    // printf("Character set name: %s\n", mysql_character_set_name(my));
    // 
    // mysql_set_character_set(my, "utf8");
    // 
    // mysql_get_character_set_info(my, &charset_info);
    // printf("Character set name: %s\n", charset_info.name);
    // printf("Character set name: %s\n", mysql_character_set_name(my));

        // 循环的客户端
    // while (1)
    // {
    //     std::cout << "MYSQL > ";
    //     std::string tmp;
    //     if(!std::getline(std::cin, tmp) || tmp == "quit")
    //     {
    //         std::cout << "bye" << std::endl;
    //         break;    
    //     }

    //     int ret = mysql_query(my, tmp.c_str());
        
    //     if(MYSQL_RES* res = mysql_store_result(my))
    //     {
    //         int rows = mysql_num_rows(res);
    //         int fields = mysql_num_fields(res);
    //         std::cout << "row::" << rows << std::endl;
    //         std::cout << "fields::" << fields << std::endl;

    //         MYSQL_FIELD* fieldArr = mysql_fetch_fields(res);
    //         for(int j = 0; j < fields; ++j)
    //         {
    //             std::cout << fieldArr[j].name << '\t';
    //         }

    //         std::cout << std::endl;

    //         for(int i = 0; i < rows; ++i)
    //         {
    //             MYSQL_ROW rowArr = mysql_fetch_row(res);
    //             for(int j = 0; j < fields; ++j)
    //             {
    //                 std::cout << rowArr[j] << '\t';
    //             }
    //             std::cout << std::endl;
    //         }

    //         std::cout << "db:" << fieldArr[0].db << std::endl;
    //         std::cout << "table:" << fieldArr[0].table << std::endl;
    //         mysql_free_result(res);
    //     }

    //     if(ret == 0)
    //     {
    //         std::cout << "success" << std::endl;
    //     }
    //     else
    //     {
    //         std::cout << "err" << std::endl; 
    //     }
    // }
    

    return 0;
}